﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using LeadThing.AbpZeroTemplate.GridPersons.Dtos;
using LeadThing.AbpZeroTemplate.Dto;

namespace LeadThing.AbpZeroTemplate.GridPersons
{
    /// <summary>
    /// 网格基本信息服务接口
    /// </summary>
    public interface IGridPersonAppService : IApplicationService
    {
        #region 网格基本信息管理

        /// <summary>
        /// 根据查询条件获取网格基本信息分页列表
        /// </summary>
        Task<PagedResultDto<GridPersonListDto>> GetPagedGridPersonsAsync(GetGridPersonInput input);

        /// <summary>
        /// 通过Id获取网格基本信息信息进行编辑或修改 
        /// </summary>
        Task<GetGridPersonForEditOutput> GetGridPersonForEditAsync(NullableIdDto<long> input);

        /// <summary>
        /// 通过指定id获取网格基本信息ListDto信息
        /// </summary>
        Task<GridPersonListDto> GetGridPersonByIdAsync(EntityDto<long> input);



        /// <summary>
        /// 新增或更改网格基本信息
        /// </summary>
        Task CreateOrUpdateGridPersonAsync(CreateOrUpdateGridPersonInput input);





        /// <summary>
        /// 新增网格基本信息
        /// </summary>
        Task<GridPersonEditDto> CreateGridPersonAsync(GridPersonEditDto input);

        /// <summary>
        /// 更新网格基本信息
        /// </summary>
        Task UpdateGridPersonAsync(GridPersonEditDto input);

        /// <summary>
        /// 删除网格基本信息
        /// </summary>
        Task DeleteGridPersonAsync(EntityDto<long> input);

        /// <summary>
        /// 批量删除网格基本信息
        /// </summary>
        Task BatchDeleteGridPersonAsync(List<long> input);

        #endregion

        #region Excel导出功能

        /// <summary>
        /// 获取网格基本信息信息转换为Excel
        /// </summary>
        /// <returns></returns>
        Task<FileDto> GetGridPersonToExcel();

        #endregion

    }
}
